﻿/*!
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

using System.Configuration;

namespace Pittypat.Configuration
{
    /// <summary>
    /// 用于配置一个 App。
    /// </summary>
    public sealed class AppConfig : ConfigurationElement
    {
        /// <summary>
        /// 获取或者设置 App 的开发者代码。
        /// </summary>
        [ConfigurationProperty("developer", IsRequired = true)]
        public string Developer
        {
            get
            {
                return (string)this["developer"];
            }
            set
            {
                this["developer"] = value;
            }
        }

        /// <summary>
        /// 获取或者设置 App 的标识符。
        /// </summary>
        [ConfigurationProperty("identifier", IsRequired = true)]
        public string Identifier
        {
            get
            {
                return (string)this["identifier"];
            }
            set
            {
                this["identifier"] = value;
            }
        }

        /// <summary>
        /// 获取或者设置 App 的当前状态。
        /// </summary>
        /// <remarks>
        /// <para>目前支持 "Normal"（或中文 "正常"）、"Maintenance"（或中文 "维护"），不区分大小写。如果不提供，则默认为 "正常"。</para>
        /// <para>如果隶属应用的状态为 "维护"，则应用中所有模块的状态都将为 "维护"。如果需要提供自定义的客户端反馈信息，使用 "维护:自定义信息" 或 "Maintenance:自定义信息" 的格式。</para>
        /// <para>处在 "维护" 状态中的模块暂时不可访问，但是仍然会出现在用户导航列表中，并向用户提示 "正在维护" 的消息。</para>
        /// </remarks>
        [ConfigurationProperty("status", IsRequired = false)]
        public string Status
        {
            get
            {
                return (string)this["status"];
            }
            set
            {
                this["status"] = value;
            }
        }

        /// <summary>
        /// 获取 App 中所有模块的配置集合。
        /// </summary>
        [ConfigurationProperty("", IsDefaultCollection = true)]
        public ModuleConfigCollection Modules
        {
            get
            {
                return (ModuleConfigCollection)this[""];
            }
        }
    }
}
